package br.com.condominio.view.beans;

import java.sql.SQLException;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import br.com.condominio.controller.ResidenciaController;
import br.com.condominio.view.vo.ResidenciaVO;

@ManagedBean(name = "residenciaMBean")
@SessionScoped
public class ResidenciaMBean extends SessionMBean {

	private final ResidenciaController controller;

	public ResidenciaMBean() throws ClassNotFoundException, SQLException {
		controller = new ResidenciaController();
	}

	private ResidenciaVO residenciaVO = new ResidenciaVO();
	private DataModel<ResidenciaVO> listaResidencias;

	public ResidenciaVO getResidenciaVO() {
		return residenciaVO;
	}

	public void setResidenciaVO(ResidenciaVO residenciaVO) {
		this.residenciaVO = residenciaVO;
	}

	public String update() throws SQLException, ClassNotFoundException {
		String retorno = "erro";

		if (controller.atualizar(residenciaVO)) {
			retorno = "listagem_residencias";
		}
		return retorno;
	}

	public String salvar() throws SQLException, ClassNotFoundException {
		String retorno = "../erro";

		if (controller.criar(residenciaVO)) {
			retorno = "listagem_residencias";
		}
		return retorno;
	}

	public DataModel<ResidenciaVO> getListaResidencias() throws SQLException,
			ClassNotFoundException {

		List<ResidenciaVO> lista = controller.getAllResidencias();
		listaResidencias = new ListDataModel<ResidenciaVO>(lista);
		return listaResidencias;
	}

	public void setListaResidencias(DataModel<ResidenciaVO> residencias) {
		this.listaResidencias = residencias;
	}

	public String excluir() throws SQLException, ClassNotFoundException {
		String retorno = "#{request.contextPath}/estrutura/erro.jsf";

		try {
			if (controller.excluir(residenciaVO)) {
				retorno = "listagem_residencias";
			}
		} catch (Exception e) {
			e.printStackTrace();
			return retorno;
		}

		return retorno;
	}

	public void insert() {
		residenciaVO = new ResidenciaVO();
	}

	public void selecionar() {
		residenciaVO = listaResidencias.getRowData();
	}
}